package secloud

const (
	ContextAccessToken = "accessToken"
)

type AuthResp struct {
	Code int           `json:"code"`
	Msg  string        `json:"msg"`
	Data *AuthRespData `json:"data"`
}

type AuthRespData struct {
	AccessToken string `json:"access_token"`
	ExpiresIn   int    `json:"expires_in"`
}

/*
   kms
*/

type GenerateWorkingKeyResp struct {
	Code int                  `json:"code"`
	Msg  string               `json:"msg"`
	Data *GenerateKeyRespData `json:"data"`
}

type GenerateKeyRespData struct {
	BgTaskId int64 `json:"bgTask_id"`
}

type QueryBgTaskResp struct {
	Code int                  `json:"code"`
	Msg  string               `json:"msg"`
	Data *QueryBgTaskRespData `json:"data"`
}

type QueryBgTaskRespData struct {
	BgTaskId  int64  `json:"bgTaskId"`
	TaskType  string `json:"taskType"`
	Finish    bool   `json:"finish"`
	TaskInfo  string `json:"taskInfo"`
	Error     string `json:"error"`
	CreatedBy string `json:"createdBy"`
	CreatedAt string `json:"createdAt"`
}

type InvokeKeyResp struct {
	Code int                 `json:"code"`
	Msg  string              `json:"msg"`
	Data []InvokeKeyRespData `json:"data"`
}

type InvokeKeyRespData struct {
	KeyId string `json:"key_id"`
}

type RenewKeyResp struct {
	Code int               `json:"code"`
	Msg  string            `json:"msg"`
	Data *RenewKeyRespData `json:"data"`
}

type RenewKeyRespData struct{}

type RevokeKeyResp struct {
	Code int                `json:"code"`
	Msg  string             `json:"msg"`
	Data *RevokeKeyRespData `json:"data"`
}

type RevokeKeyRespData struct{}

type DestroyKeyResp struct {
	Code int                 `json:"code"`
	Msg  string              `json:"msg"`
	Data *DestroyKeyRespData `json:"data"`
}

type DestroyKeyRespData struct{}

type BackupResp struct {
	Code int             `json:"code"`
	Msg  string          `json:"msg"`
	Data *BackupRespData `json:"data"`
}

type BackupRespData struct{}

type RecoverResp struct {
	Code int              `json:"code"`
	Msg  string           `json:"msg"`
	Data *RecoverRespData `json:"data"`
}

type RecoverRespData struct{}

type OpenKeySessionResp struct {
	Code int                     `json:"code"`
	Msg  string                  `json:"msg"`
	Data *OpenKeySessionRespData `json:"data"`
}

type OpenKeySessionRespData struct {
	SessionId string `json:"session_id"`
}

type CloseKeySessionResp struct {
	Code int                      `json:"code"`
	Msg  string                   `json:"msg"`
	Data *CloseKeySessionRespData `json:"data"`
}

type CloseKeySessionRespData struct{}

type ExportPublicKeyResp struct {
	Code int                      `json:"code"`
	Msg  string                   `json:"msg"`
	Data *ExportPublicKeyRespData `json:"data"`
}

type ExportPublicKeyRespData struct {
	PublicKey string `json:"public_key"`
}

/*
   cipher
*/

type EncryptResp struct {
	Code int              `json:"code"`
	Msg  string           `json:"msg"`
	Data *EncryptRespData `json:"data"`
}

type EncryptRespData struct {
	CipherText string `json:"cipher_text"`
}

type DecryptResp struct {
	Code int              `json:"code"`
	Msg  string           `json:"msg"`
	Data *DecryptRespData `json:"data"`
}

type DecryptRespData struct {
	PlainText string `json:"plain_text"`
}

type RandomResp struct {
	Code int             `json:"code"`
	Msg  string          `json:"msg"`
	Data *RandomRespData `json:"data"`
}

type RandomRespData struct {
	RandomText string `json:"random_text"`
}

type SignResp struct {
	Code int           `json:"code"`
	Msg  string        `json:"msg"`
	Data *SignRespData `json:"data"`
}

type SignRespData struct {
	Signature string `json:"signature"`
}

type VerifyResp struct {
	Code int             `json:"code"`
	Msg  string          `json:"msg"`
	Data *VerifyRespData `json:"data"`
}

type VerifyRespData struct {
	OK bool `json:"ok"`
}

/*
	sdm
*/

type AddDeviceRespData struct {
	ID string `json:"id"`
}

type AddDeviceResp struct {
	Code int                `json:"code"`
	Msg  string             `json:"msg"`
	Data *AddDeviceRespData `json:"data"`
}

type ListDevicesRespDataItem struct {
	ID     string `json:"id"`
	Name   string `json:"name"`
	Port   string `json:"port"`
	State  string `json:"state"`
	Status string `json:"status"`
}

type ListDevicesRespData struct {
	Lists []ListDevicesRespDataItem `json:"lists"`
}

type ListDevicesResp struct {
	Code int                  `json:"code"`
	Msg  string               `json:"msg"`
	Data *ListDevicesRespData `json:"data"`
}

type RemoveDeviceRespData struct {
	Ret bool `json:"ret"`
}

type RemoveDeviceResp struct {
	Code int                   `json:"code"`
	Msg  string                `json:"msg"`
	Data *RemoveDeviceRespData `json:"data"`
}

type StartDeviceRespData struct {
	Ret bool `json:"ret"`
}

type StartDeviceResp struct {
	Code int                  `json:"code"`
	Msg  string               `json:"msg"`
	Data *StartDeviceRespData `json:"data"`
}

type StopDeviceRespData struct {
	Ret bool `json:"ret"`
}

type StopDeviceResp struct {
	Code int                 `json:"code"`
	Msg  string              `json:"msg"`
	Data *StopDeviceRespData `json:"data"`
}
